home *** CD-ROM | disk | FTP | other *** search
/ Openstep 4.2 (Developer) / Openstep Developer 4.2.iso / NextDeveloper / Headers / kernserv / lock.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-04-16  |  1.3 KB  |  60 lines

  1. /* 
  2.  * Mach Operating System
  3.  * Copyright (c) 1989 Carnegie-Mellon University
  4.  * Copyright (c) 1988 Carnegie-Mellon University
  5.  * Copyright (c) 1987 Carnegie-Mellon University
  6.  * All rights reserved.  The CMU software License Agreement specifies
  7.  * the terms and conditions for use and redistribution.
  8.  */
  9. /*
  10.  * HISTORY
  11.  * 11-Jul-91  Gregg Kellogg (gk) at NeXT
  12.  *    Initial version.
  13.  */
  14. /*
  15.  *    File:    kernserv/lock.h
  16.  *    Author:    Avadis Tevanian, Jr., Michael Wayne Young
  17.  *    Copyright (C) 1985, Avadis Tevanian, Jr., Michael Wayne Young
  18.  *
  19.  *    Exported locking primitives definitions
  20.  *
  21.  */
  22.  
  23.  
  24. #ifndef    _KERN_LOCK_H_
  25. #define _KERN_LOCK_H_
  26.  
  27. #import <mach/boolean.h>
  28.  
  29. /*
  30.  *    A simple spin lock.
  31.  */
  32.  
  33. #import    <mach/machine/simple_lock.h>
  34.  
  35. typedef void    *lock_t;
  36.  
  37. /* Sleep locks must work even if no multiprocessing */
  38.  
  39. extern lock_t        lock_alloc();
  40. extern void        lock_free();
  41. extern void        lock_init();
  42. extern void        lock_sleepable();
  43. extern void        lock_write();
  44. extern void        lock_read();
  45. extern void        lock_done();
  46. extern boolean_t    lock_read_to_write();
  47. extern void        lock_write_to_read();
  48. extern boolean_t    lock_try_write();
  49. extern boolean_t    lock_try_read();
  50. extern boolean_t    lock_try_read_to_write();
  51.  
  52. #define lock_read_done(l)    lock_done(l)
  53. #define lock_write_done(l)    lock_done(l)
  54.  
  55. extern void        lock_set_recursive();
  56. extern void        lock_clear_recursive();
  57.  
  58. #endif    _KERN_LOCK_H_
  59.  
  60.